package classes_basicas;

import java.util.Collection;
import java.util.List;

import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.OneToOne;

import org.hibernate.annotations.Cascade;
import org.hibernate.annotations.CascadeType;
import org.hibernate.annotations.Fetch;
import org.hibernate.annotations.FetchMode;
@Entity
public class Encomenda {

	public Encomenda() {
		// TODO Auto-generated constructor stub
	}
	@Id
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private long id_encomenda;
	
	@OneToOne(fetch = FetchType.LAZY)
	@JoinColumn(name="id_cliente")
	@Fetch(FetchMode.JOIN)
	@Cascade(CascadeType.SAVE_UPDATE)
	private Cliente cliente;   
	@OneToOne(fetch = FetchType.LAZY)
	@JoinColumn(name="id_funcionario")
	@Fetch(FetchMode.JOIN)
	@Cascade(CascadeType.SAVE_UPDATE)
    private Funcionario funcionario;   
    private String data_pedido;
    private String data_entrega;
    private double valor;
    
    private String status;
    
    @ManyToMany(fetch = FetchType.LAZY)
	@JoinTable(name="produtos_encomenda",joinColumns=@JoinColumn (name="id_encomenda"), inverseJoinColumns=@JoinColumn(name="id_produto"))     
    private List<Produto> produtos;
    
    
	public long getId_encomenda() {
		return id_encomenda;
	}
	public void setId_encomenda(long id_encomenda) {
		this.id_encomenda = id_encomenda;
	}
	public String getStatus() {
		return status;
	}
	public void setStatus(String status) {
		this.status = status;
	}
	public List<Produto> getProdutos() {
		return produtos;
	}
	public void setProdutos(List<Produto> produtos) {
		this.produtos = produtos;
	}
	public Cliente getCliente() {
		return cliente;
	}
	public void setCliente(Cliente cliente) {
		this.cliente = cliente;
	}
	public Funcionario getFuncionario() {
		return funcionario;
	}
	public void setFuncionario(Funcionario funcionario) {
		this.funcionario = funcionario;
	}
	public String getData_pedido() {
		return data_pedido;
	}
	public void setData_pedido(String data_pedido) {
		this.data_pedido = data_pedido;
	}
	public String getData_entrega() {
		return data_entrega;
	}
	public void setData_entrega(String data_entrega) {
		this.data_entrega = data_entrega;
	}

	public double getValor() {
		return valor;
	}
	public void setValor(double totalValor) {
		this.valor = totalValor;
	}


}
